Error200 aneb nač rychlé počítače? ;-)
K čemu rychlý počítač, chci-li si zahrát Civilizaci, Golden Axe, Dyna Blaster, Wolfensteina nebo třeba Larryho1?? V tom výčtu bych mohl pokračovat dlouho a většina lidí, kteří mají aspoň dvacátý křížek za sebou, mi dá za pravdu, že to je pravda a s nostalgií na tu dobu a hlavně hry vzpomínají. Dost sentimentu, tento krátký článek je o tomhle:
Runtime error 200 at 0036:0091
Říká Vám ta hláška něco? Že ji nevidíte poprvé? Jistě, kdo by měl v 21. století pomalý počítač (troška nadsázky neuškodí). Vysvětlení je takové, že chybu
způsobuje knihovna CRT (Turbo.tpl) programovacího jazyka Pascal a podobných, která špatně funguje s procesory Intel rychlejšími než 233MHz. (Byl bych
rád, kdyby mi někdo napsal podrobnosti o příčině tohoto jevu, protože programováním se moc nezabývám a zda se chyba neobjevuje i u AMD.) Prý knihovna
při volání procedury delay (prodleva) a následných výpočtech zhavaruje, protože proměnná je chybně definována. Chyba 200 sice znamená dělení nulou, ale ve
skutečnosti jde o přetečení zásobníku.
Takto to vidí můj kolega MiK: Ty programy (resp. ta knihovna) si údajně na začátku nastavují konstantu, kterou pak vkládají do funkce delay. Dělají to tak, že snad frekvenci procesoru něčím vydělí a použijí výsledek. Následkem má být, že funkce delay bude házet "zpoždění" zhruba stejné na různě rychlých procesorech. (Že se to jinak chová v DOSu, Win9x a WinNT je jiná. :-)) Bohužel u příliš rychlých procesorů je frekvence tak vysoká, že podíl se nevejde do přiděleného místa v paměti (ehm asi registru 8-bit :-)). Stejná chyba vzniká, když dělíš nulou (podíl je nekonečno), proto ta chyba. Samozřejmě se nastaví příznak přetečení a program končí s onou magickou 200.
Řešení je několik. První a systémová je oprava knihovny přímo v Pascalu novou verzí (fix2) - pokud ovšem máte zdroják programu. Další patche opravují již zkompilovaný EXE soubor. Můžete si tady stáhnout skupinu 5 patchů, které můžete vyzkoušet při opravě.
Také můžete navštívit další stránky popisující tuto chybu, jeden odkaz za všechny (v AJ):
http://www.brain.uni-freiburg.de/~klaus/pascal/runerr200/index.html
Jinou možností je počítač zpomalit, aby k přetečení nedošlo. Že to funguje si můžete vyzkoušet tím nejjednodušším způsobem (pod Windows) - spustíte zběsilým klikáním co nejvíce instancí programu. To zatíží v daný okamžik procesor a některá instance se chytne. Pokud ale chcete trochu hezčí řešení, čtěte dále.
Jak jste na tom s touto chybou vy? Napište mi neboaspoň zahlasujte v anketě!
Zpomalení počítače
Jednoduše jde o zatížení procesoru, což pomůže obejít chybu 200 u pascalovských programů nebo obecně umožní hrát hry, které nebyly připraveny na
současně rychlé procesory a jsou nehratelně rychlé.
Můžete ke zpomalení počítače použít český program Sleeper nebo cizí CPU Killer, případně Mo'Slo.
A ty slíbené staré pařby?
Tak třeba tady:
www.plnehry.cz
www.old-cans.com
pikodrak.kgb.cz
www.theunderdogs.org
www.freeoldies.com
www.starehry.cz/
www.abandongames.com
www.freehry.cz
www.plne-hry.sk
www.gamez4u.cz
www.hryzdarma.cz